package code10_interface;

public class Test02 {
	public static void main(String[] args) {
		Book b = new Book();
		// 多态
		Write w = b;
		w.write();
		w.show();
		System.out.println("------");
		Eat e = b;
		e.eat();
		e.show();
		System.out.println("--------");
		Book2 b2 = new Book2();
		All a = b2;
		a.eat();
		a.write();
		a.show();
		a.fire();
	}
}
interface Eat {
	void eat();// 可以被吃
	void show();
}
interface Write {
	void write();// 可以被写
	void show();
}
// 可以有多种能力
class Book implements Write, Eat {
	@Override
	public void write() {
		System.out.println("Book.write()");
	}
	@Override
	public void show() {// 共有实现
		System.out.println("Book.show()");
	}
	@Override
	public void eat() {
		System.out.println("Book.eat()");
	}
}
// 接口的组合
interface All extends Write, Eat {
	// 接口只能 extends 其他接口, 此 extends 被称为 组合
	// 接口的组合是可以有多个的。即 接口 可以多 extends
	void fire();// 可以燃烧
	// 实现 All 接口类, 必须实现 All与Write、Eat的抽象方法, 拥有这些能力
}
class Book2 implements All {
	@Override
	public void write() {
	}
	@Override
	public void show() {
	}
	@Override
	public void eat() {
	}
	@Override
	public void fire() {
	}
}

